package com.example.mydemo;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

import java.util.Collections;

public class CodeGenerator {
    public static void main(String[] args) {
            // 数据库连接信息，需要替换为实际的信息
            String url = "jdbc:mysql://localhost:3306/my_spring_boot_db?useSSL=false&serverTimezone=UTC";
            String username = "root";
            String password = "123456";

            // 创建代码生成器实例
            FastAutoGenerator.create(url, username, password)
                    // 全局配置
                    .globalConfig(builder -> {
                        // 设置代码作者
                        builder.author("syf")
                                // 是否覆盖已存在的文件
                                //.enableFileOverride()
                                //.fileOverride()
                                // 代码输出目录
                                .outputDir("src\\main\\java");
                    })
                    // 包配置
                    .packageConfig(builder -> {
                        // 设置父包名
                        builder.parent("")
                                // 设置模块名
                                .moduleName("")
                                // 实体类包名
                                .entity("entity")
                                // Mapper 接口包名
                                .mapper("mapper")
                                // Service 接口包名
                                .service("service")
                                // Service 实现类包名
                                .serviceImpl("service.impl")
                                // Controller 类包名
                                .controller("controller")
                                //.xml("mappers") ; // 设置 Mapper XML 文件包名
                                // Mapper XML 文件输出路径
                                .pathInfo(Collections.singletonMap(OutputFile.xml, "src/main/resources/mapper"));
                    })
                    // 策略配置
                    .strategyConfig(builder -> {
                        // 指定要生成代码的表名，可以指定多个表
                        builder.addInclude("c_clockrule")
                        // 过滤表前缀，生成的实体类名会去掉该前缀
                            .addTablePrefix("c_");
                        // 实体类策略配置
                        builder.entityBuilder()
                                // 开启 Lombok 注解支持
                                .enableLombok();
                        // Controller 类策略配置
                        builder.controllerBuilder()
                                .enableHyphenStyle()
                                .formatFileName("%sController")
                                // 开启 Restful 风格
                                .enableRestStyle();
                        builder.mapperBuilder();
                    })
                    // 模板引擎配置，使用 Freemarker 模板引擎
                    .templateEngine(new FreemarkerTemplateEngine())
                    // 执行代码生成操作
                    .execute();
        }
}

